package com.example.tuShare.utils;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class DateUtils {
    // 定义可能的日期格式
    private static final DateTimeFormatter[] DATE_FORMATTERS = {
            DateTimeFormatter.ofPattern("yyyy/M/d"),         // 例如 2022/1/3
            DateTimeFormatter.ofPattern("M/d/yy"),           // 例如 1/3/22
            DateTimeFormatter.ofPattern("yyyy-MM-dd"),       // 例如 2020-08-04
            DateTimeFormatter.ofPattern("yyyy/M/d H:mm:ss"), // 例如 2021/10/29 0:00:00
            DateTimeFormatter.ofPattern("yyyy/M/d H:mm"),   // 例如 2010/1/4 0:00
            DateTimeFormatter.ofPattern("yyyyMMdd")     // 例如 2010/1/4 0:00
    };

    /**
     * 尝试用多种格式解析日期
     */
    public static LocalDate parseDate(String dateStr) {
        for (DateTimeFormatter formatter : DATE_FORMATTERS) {
            try {
                // 如果是日期时间格式（包含时间部分），解析为 LocalDateTime，然后提取日期部分
                if (formatter.toString().contains("H:mm") || formatter.toString().contains("H:mm:ss")) {
                    LocalDateTime dateTime = LocalDateTime.parse(dateStr, formatter);
                    return dateTime.toLocalDate();
                } else {
                    // 否则直接解析为 LocalDate
                    return LocalDate.parse(dateStr, formatter);
                }
            } catch (DateTimeParseException e) {
                // 忽略解析失败，尝试下一种格式
            }
        }
        return null; // 所有格式都解析失败
    }

    /**
     * 将日期格式化为 yyyy-MM-dd
     */
    public static String formatDate(LocalDate date) {
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return date.format(outputFormatter);
    }
}